GitLab Pages settings | 您所在的位置:网站首页 › gitlab 静态网页 › GitLab Pages settings |
GitLab Pages requirementsGitLab Pages on GitLab.comExample projectsCustom error codes pagesRedirects in GitLab PagesRemove your pagesSubdomains of subdomainsGitLab Pages in projects and groupsEnable unique domains
Specific configuration options for Pages
.gitlab-ci.yml for plain HTML websites.gitlab-ci.yml for a static site generator.gitlab-ci.yml for a repository with codeServing compressed assetsResolving ambiguous URLsCustomize the default folderKnown issues
Troubleshooting
404 error when accessing a GitLab Pages site URLCannot play media content on SafariGitLab Pages settings
This document is a user guide to explore the options and settings GitLab Pages offers. To familiarize yourself with GitLab Pages first: Read an introduction to GitLab Pages.Learn how to get started with Pages.Learn how to enable GitLab Pages across your GitLab instance on the administrator documentation.GitLab Pages requirementsIn brief, this is what you need to upload your website in GitLab Pages: Domain of the instance: domain name that is used for GitLab Pages (ask your administrator).GitLab CI/CD: a .gitlab-ci.yml file with a specific job named pages in the root directory of your repository.GitLab Runner enabled for the project.GitLab Pages on GitLab.comIf you are using GitLab Pages on GitLab.com to host your website, then: The domain name for GitLab Pages on GitLab.com is gitlab.io.Custom domains and TLS support are enabled.Shared runners are enabled by default, provided for free and can be used to build your website. If you want you can still bring your own runner.Example projectsVisit the GitLab Pages group for a complete list of example projects. Contributions are very welcome. Custom error codes pagesYou can provide your own 403 and 404 error pages by creating 403.html and 404.html files in the root of the public/ directory. Usually this is the root directory of your project, but that may differ depending on your static generator configuration. If the case of 404.html, there are different scenarios. For example: If you use project Pages (served under /projectname/) and try to access /projectname/non/existing_file, GitLab Pages tries to serve first /projectname/404.html, and then /404.html.If you use user or group Pages (served under /) and try to access /non/existing_file GitLab Pages tries to serve /404.html.If you use a custom domain and try to access /non/existing_file, GitLab Pages tries to serve only /404.html.Redirects in GitLab PagesYou can configure redirects for your site using a _redirects file. For more information, see Create redirects for GitLab Pages. Remove your pagesTo remove your pages: On the left sidebar, at the top, select Search GitLab () to find your project.On the left sidebar, select Deploy > Pages.Select Remove pages.Subdomains of subdomainsWhen using Pages under the top-level domain of a GitLab instance (*.example.io), you can’t use HTTPS with subdomains of subdomains. If your namespace or group name contains a dot (for example, foo.bar) the domain https://foo.bar.example.io does not work. This limitation is because of the HTTP Over TLS protocol. HTTP pages work as long as you don’t redirect HTTP to HTTPS. GitLab Pages in projects and groupsYou must host your GitLab Pages website in a project. This project can be private, internal, or public and belong to a group or subgroup. For group websites, the group must be at the top level and not a subgroup. For project websites, you can create your project first and access it under http(s)://namespace.example.io/projectname. Enable unique domains Version history Introduced in GitLab 15.9 with a flag named pages_unique_domain. Disabled by default. Enabled by default in GitLab 15.11. Feature flag removed in GitLab 16.3.By default, every project in a group shares the same domain, for example, group.gitlab.io. This means that cookies are also shared for all projects in a group. To ensure your project uses a unique Pages domain, enable the unique domains feature for the project: On the left sidebar, at the top, select Search GitLab () to find your project.On the left sidebar, select Deploy > Pages.Select the Use unique domain checkbox.Select Save changes.Specific configuration options for PagesLearn how to set up GitLab CI/CD for specific use cases. .gitlab-ci.yml for plain HTML websitesSupposed your repository contained the following files: ├── index.html ├── css │ └── main.css └── js └── main.jsThen the .gitlab-ci.yml example below moves all files from the root directory of the project to the public/ directory. The .public workaround is so cp doesn’t also copy public/ to itself in an infinite loop: pages: script: - mkdir .public - cp -r * .public - mv .public public artifacts: paths: - public only: - main .gitlab-ci.yml for a static site generatorSee this document for a step-by-step guide. .gitlab-ci.yml for a repository with codeRemember that GitLab Pages are by default branch/tag agnostic and their deployment relies solely on what you specify in .gitlab-ci.yml. You can limit the pages job with the only parameter, whenever a new commit is pushed to a branch used specifically for your pages. That way, you can have your project’s code in the main branch and use an orphan branch (let’s name it pages) to host your static generator site. You can create a new empty branch like this: git checkout --orphan pagesThe first commit made on this new branch has no parents and is the root of a new history totally disconnected from all the other branches and commits. Push the source files of your static generator in the pages branch. Below is a copy of .gitlab-ci.yml where the most significant line is the last one, specifying to execute everything in the pages branch: image: ruby:2.6 pages: script: - gem install jekyll - jekyll build -d public/ artifacts: paths: - public only: - pagesSee an example that has different files in the main branch and the source files for Jekyll are in a pages branch which also includes .gitlab-ci.yml. Serving compressed assetsMost modern browsers support downloading files in a compressed format. This speeds up downloads by reducing the size of files. Before serving an uncompressed file, Pages checks if the same file exists with a .br or .gz extension. If it does, and the browser supports receiving compressed files, it serves that version instead of the uncompressed one. To take advantage of this feature, the artifact you upload to the Pages should have this structure: public/ ├─┬ index.html │ | index.html.br │ └ index.html.gz │ ├── css/ │ └─┬ main.css │ | main.css.br │ └ main.css.gz │ └── js/ └─┬ main.js | main.js.br └ main.js.gzThis can be achieved by including a script: command like this in your .gitlab-ci.yml pages job: pages: # Other directives script: # Build the public/ directory first - find public -type f -regex '.*\.\(htm\|html\|txt\|text\|js\|css\)$' -exec gzip -f -k {} \; - find public -type f -regex '.*\.\(htm\|html\|txt\|text\|js\|css\)$' -exec brotli -f -k {} \;By pre-compressing the files and including both versions in the artifact, Pages can serve requests for both compressed and uncompressed content without needing to compress files on-demand. Resolving ambiguous URLsGitLab Pages makes assumptions about which files to serve when receiving a request for a URL that does not include an extension. Consider a Pages site deployed with the following files: public/ ├── index.html ├── data.html ├── info.html ├── data/ │ └── index.html └── info/ └── details.htmlPages supports reaching each of these files through several different URLs. In particular, it always looks for an index.html file if the URL only specifies the directory. If the URL references a file that doesn’t exist, but adding .html to the URL leads to a file that does exist, it’s served instead. Here are some examples of what happens given the above Pages site: URL pathHTTP response / 200 OK: public/index.html /index.html 200 OK: public/index.html /index 200 OK: public/index.html /data 302 Found: redirecting to /data/ /data/ 200 OK: public/data/index.html /data.html 200 OK: public/data.html /info 302 Found: redirecting to /info/ /info/ 404 Not Found Error Page /info.html 200 OK: public/info.html /info/details 200 OK: public/info/details.html /info/details.html 200 OK: public/info/details.htmlWhen public/data/index.html exists, it takes priority over the public/data.html file for both the /data and /data/ URL paths. Customize the default folder Version history Introduced in GitLab 16.1 with a Pages flag named FF_CONFIGURABLE_ROOT_DIR. Disabled by default. Enabled on GitLab.com in GitLab 16.1. Enabled on self-managed in GitLab 16.2.By default, the artifact folder that contains the static files of your site needs to have the name public. To change that folder name to any other value, add a publish property to your pages job configuration in .gitlab-ci.yml. The following example publishes a folder named dist instead: pages: script: - npm run build artifacts: paths: - dist publish: distIf you’re using a folder name other than publicyou must specify the directory to be deployed with Pages both as an artifact, and under the publish property. The reason you need both is that you can define multiple paths as artifacts, and GitLab doesn’t know which one you want to deploy. Known issuesFor a list of known issues, see the GitLab public issue tracker. Troubleshooting 404 error when accessing a GitLab Pages site URLThis problem most likely results from a missing index.html file in the public directory. If after deploying a Pages site a 404 is encountered, confirm that the public directory contains an index.html file. If the file contains a different name such as test.html, the Pages site can still be accessed, but the full path would be needed. For example: https//group-name.pages.example.com/project-name/test.html. The contents of the public directory can be confirmed by browsing the artifacts from the latest pipeline. Files listed under the public directory can be accessed through the Pages URL for the project. A 404 can also be related to incorrect permissions. If Pages Access Control is enabled, and a user navigates to the Pages URL and receives a 404 response, it is possible that the user does not have permission to view the site. To fix this, verify that the user is a member of the project. Cannot play media content on SafariSafari requires the web server to support the Range request header to play your media content. For GitLab Pages to serve HTTP Range requests, you should use the following two variables in your .gitlab-ci.yml file: pages: stage: deploy variables: FF_USE_FASTZIP: "true" ARTIFACT_COMPRESSION_LEVEL: "fastest" script: - echo "Deploying pages" artifacts: paths: - public environment: productionThe FF_USE_FASTZIP variable enables the feature flag which is needed for ARTIFACT_COMPRESSION_LEVEL. |
CopyRight 2018-2019 实验室设备网 版权所有 |